Java তে Mutable String হলো এমন একটি String অবজেক্ট, যেটির মান পরিবর্তনযোগ্য (mutable)। সাধারণত, Java তে String অবজেক্টগুলো immutable হয়, অর্থাৎ একবার String তৈরি হলে তার মান পরিবর্তন করা যায় না। তবে, Mutable String কনসেপ্টের মাধ্যমে আপনি String এর মান পরিবর্তন করতে পারেন। Java তে StringBuilder এবং StringBuffer এই ধরনের mutable String এর প্রতিনিধিত্ব করে।
1. Immutable String vs Mutable String:
Immutable String: Java তে
Stringক্লাসের অবজেক্ট ইমিউটেবল হয়। একবার একটিStringঅবজেক্ট তৈরি হলে, তার মান পরিবর্তন করা সম্ভব নয়। যদি আপনি একটি নতুন মান নিয়ে সেই String এর পরিবর্তন করতে চান, তবে এটি নতুনStringঅবজেক্ট তৈরি করবে।উদাহরণ:
String str = "Hello"; str = str + " World"; // New String object is created- Mutable String:
StringBuilderএবংStringBufferক্লাসের অবজেক্টগুলো মিউটেবল (mutable)। আপনি এই ক্লাসগুলির মাধ্যমে String এর মান পরিবর্তন করতে পারবেন। এগুলোর মধ্যে পার্থক্য হল, StringBuffer থ্রেড সেফ এবং StringBuilder থ্রেড সেফ নয়।
StringBuilder এবং StringBuffer ক্লাস:
StringBuilder:
StringBuilder ক্লাস একটি মিউটেবল String তৈরি করতে ব্যবহৃত হয়, যার মান পরিবর্তন করা যায়। এটি সাধারণত তখন ব্যবহৃত হয় যখন একাধিক String অপারেশন করতে হয় এবং আপনি পারফরম্যান্সের দিকে লক্ষ্য রাখতে চান, কারণ এটি থ্রেড সেফ নয়, কিন্তু দ্রুত কার্যকরী।
প্রধান বৈশিষ্ট্য:
- থ্রেড সেফ নয়।
- দ্রুত পারফরম্যান্স প্রদান করে, কারণ এটি কোনো সিঙ্ক্রনাইজেশন ব্যবহৃত হয় না।
উদাহরণ:
StringBuilder sb = new StringBuilder("Hello");
sb.append(" World"); // Modifying the existing String
System.out.println(sb); // Output: Hello World
StringBuffer:
StringBuffer ক্লাসও মিউটেবল String তৈরি করতে ব্যবহৃত হয়, কিন্তু এটি থ্রেড সেফ। এটি একাধিক থ্রেডের মধ্যে নিরাপদে ব্যবহৃত হতে পারে, কিন্তু এর পারফরম্যান্স StringBuilder এর তুলনায় একটু কম।
প্রধান বৈশিষ্ট্য:
- থ্রেড সেফ।
- পারফরম্যান্স কম, কারণ এটি প্রতিটি অপারেশনের জন্য সিঙ্ক্রনাইজেশন ব্যবহার করে।
উদাহরণ:
StringBuffer sbf = new StringBuffer("Hello");
sbf.append(" World"); // Modifying the existing String
System.out.println(sbf); // Output: Hello World
Mutable String এর সুবিধা:
- পারফরম্যান্স: যখন আপনি একাধিক String অপারেশন (যেমন যোগ করা, পরিবর্তন করা) করতে চান, তখন
StringBuilderবাStringBufferব্যবহার করলে প্রতিবার নতুনStringঅবজেক্ট তৈরি করার প্রয়োজন হয় না, যার ফলে পারফরম্যান্স উন্নত হয়। - মেমরি ব্যবস্থাপনা:
StringBuilderবাStringBufferএকটি মিউটেবল String তৈরি করতে সাহায্য করে, ফলে মেমরি সাশ্রয় হয়, কারণ একটি String অবজেক্ট পরিবর্তন করতে বারবার নতুন অবজেক্ট তৈরি করার প্রয়োজন হয় না।
Mutable String এর ব্যবহার কোথায় করবেন?
- ইন্টারনাল String প্রক্রিয়াকরণ: যখন আপনাকে একাধিক String এর সাথে কাজ করতে হয়, যেমন একাধিক শব্দ যোগ বা পরিবর্তন করতে, তখন
StringBuilderবাStringBufferব্যবহার করা উচিত। - লুপ বা পুনরাবৃত্তি: যখন একটি String বারবার পরিবর্তন করা হয়, যেমন একটি লুপে String তৈরি করা, তখন মিউটেবল স্ট্রিং ব্যবহার করা সুবিধাজনক।
কেন StringImmutable বা StringBuilder/StringBuffer ব্যবহৃত হয়?
- String (Immutable): String সাধারণত ইমিউটেবল হয় যাতে নিরাপত্তা, থ্রেড সেফটি এবং নিরাপত্তার জন্য বিভিন্ন সুবিধা পাওয়া যায়। এটি Java এর ফাইনাল ক্লাস হিসেবে ডিজাইন করা হয়েছে যাতে এটি ভুলভাবে পরিবর্তিত না হয়।
- StringBuilder/StringBuffer (Mutable): যখন অবজেক্টের মান পরিবর্তন করা প্রয়োজন এবং আপনি একটি অপটিমাইজড, দ্রুত কার্যক্ষম প্রোগ্রাম তৈরি করতে চান, তখন
StringBuilderবাStringBufferব্যবহার করা উচিত।
Java তে Mutable String এর কনসেপ্ট StringBuilder এবং StringBuffer এর মাধ্যমে বাস্তবায়িত করা হয়েছে। যেহেতু String ক্লাসটি ইমিউটেবল, তাই বারবার পরিবর্তন করতে গেলে নতুন String অবজেক্ট তৈরি হয়, যা পারফরম্যান্সের জন্য অকার্যকর হতে পারে। আর, StringBuilder এবং StringBuffer এর মাধ্যমে আমরা মিউটেবল স্ট্রিং তৈরি করতে পারি, যেগুলির মান পরিবর্তনযোগ্য এবং অধিক কার্যকরী।
Read more